// 题意：找到数组中的两个数字的索引，和为指定的数。条件一，只有一种情况符合条件 条件二：尽量时间复杂度<O(n^2)

//<O(n^2)的本质是，hash计算式O(1),可以忽略，相当于执行一次1+1。

//关键，不用跟前面再比了，因为前面跟自己已经比过了。

function findIndex_n2(eles:number[],sum:number):number[] {

  for (let i = 0; i < eles.length; i++) {
    let currentV = eles[i];
    for (let j = i+1; j < eles.length; j++) {
      const afterV = eles[j];
      if (afterV == sum - currentV) {
        return [i,j]
      }
    }
    
  }
  return []
}
function findIndex_n1(eles:number[],sum:number):number[] {
  let map = new Map()
  for (let i = 0; i < eles.length; i++) {
    let currentV = eles[i]
    let needV = sum - currentV
    if (map.has(String(needV))) {
      return [i,map.get(String(needV))]
    }
    map.set(String(currentV),i)
  }
  return []
}
let array = [8,3,2,7,11]
console.log(findIndex_n2(array,9)) 